<?php

require_once '../../classes/arquitetura/controller/AbstractController.class.php';

/**
 * Esta classe efetua todas as chamadas para execução do login.
 *
 * @author tiago
 */
class LoginController extends AbstractController {

    /**
     * Executa o processamento principal
     * @author Tiago <tiago.professor@gmail.com>
     * @param type $objRequest
     */
    public function specificExecute($objRequest) {
        if($this->log->isDebugEnabled()) {
            $this->log->logDebug('Entrou método specificExecute()');
        }
        
        // Gravando na sessão a empresa do usuário.
        $_SESSION[EMPRESA] = strtolower($objRequest[EMPRESA]);

        //Executando a chamada ao service.
        $this->getService()->execute(IConnection::CONN_ADM);
        
        if($this->getModel()->getResult()->isSuccess()) {
            if($this->log->isDebugEnabled()) {
                $this->log->logDebug('LOGIN REALIZADO COM SUCESSO. Adicionando o usuário [' . $this->getService()->getModel()->getUsuario()->getEmail() . '] na sessão.');
            }
            //Escrevendo o objeto na sessão
            //O atributo empresas foi atualizado pela classe service.
            $_SESSION[USUARIO_LOGADO] = serialize($this->getService()->getModel()->getUsuario());
            
            // Deleta o cookie definido anteriormente
            unset($_SESSION['showAntiSpan']);
        } else {
            $_SESSION['showAntiSpan'] = true;
        }
    }

    /**
     * Popula os atributos desta classe
     * @author Tiago <tiago.professor@gmail.com>
     * @param type $objRequest
     */
    public function populandoAtributos($objRequest) {
        if($this->log->isDebugEnabled()) {
            $this->log->logDebug('Entrou no método populandoAtributos()');
        }
        
        // Recuperando o objeto com os parametros do request.
        $login = LoginHelper::getObjFromRequest($objRequest);

        // Instanciando o model e o result.
        // Setando o result e o entity no model
        $model = new LoginModel();
        $model->setResult(new GenericResult());
        $model->setLogin($login);

        // Instanciando a classe de serviço
        // Setando o model na classe de serviço
        $service = new LoginServiceDao();
        $service->setModel($model);

        //Setando o model e o serviço nesta classe Controller
        $this->setModel($model);
        $this->setService($service);
    }

    /**
     * Efetua a validação dos dados recebidos pelo formulario
     * que estao no model.
     */
    public function isModelValido() {
        return LoginHelper::validarModel($this->getModel());
    }

}

?>
